#ifndef __CAMERA_INTERFACE_HEADER__
#define __CAMERA_INTERFACE_HEADER__



struct CameraInfo
{
	Matrix	view, proj, view_proj;
};

class NavigationCamera
{
public:
	NavigationCamera()
	{
		SetDirection(0,0,0);
		m_pos = Vector3(25,20,25);
		m_camSpeed = 10;
		m_distance = 1000;
	}

	void Update(float dt);
	void SetDirection(float yaw,float pitch,float roll);
	void DirMove(float distance,int axis);

	void SetZDistance(float distance) { m_distance = distance; }

	CameraInfo & GetCameraInfo() { return m_camInfo; }
protected:
	CameraInfo				m_camInfo;
	Vector3					m_dir;
	Vector3					m_pos;
	float					m_yaw,m_pitch,m_roll;
	float					m_camSpeed;
	float					m_distance;
	float					m_fov, m_aspect, m_farZ, m_nearZ;
};

#endif
